package com.sunny.duck;

import com.sunny.duck.behavior.FlyBehavior;
import com.sunny.duck.behavior.QuackBehavior;

import java.util.Objects;

//                   _ooOoo_
//                  o8888888o
//                  88" . "88
//                  (| -_- |)
//                  O\  =  /O
//               ____/`---'\____
//             .'  \\|     |//  `.
//            /  \\|||  :  |||//  \
//           /  _||||| -:- |||||-  \
//           |   | \\\  -  /// |   |
//           | \_|  ''\---/''  |   |
//           \  .-\__  `-`  ___/-. /
//         ___`. .'  /--.--\  `. . __
//      ."" '<  `.___\_<|>_/___.'  >'"".
//     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
//     \  \ `-.   \_ __\ /__ _/   .-` /  /
//======`-.____`-.___\_____/___.-`____.-'======
//                   `=---='
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//         佛祖保佑       永无BUG
//
// 鸭子超类 
// matian
// 2019.02.13
public class Duck {

    private FlyBehavior flyBehavior;

    private QuackBehavior quackBehavior;

    public void setFlyBehavior(FlyBehavior flyBehavior) {
        this.flyBehavior = flyBehavior;
    }

    public void setQuackBehavior(QuackBehavior quackBehavior) {
        this.quackBehavior = quackBehavior;
    }

    /**
     * 飞︿(￣︶￣)︿
     */
    public void performFly(){
        if (Objects.isNull(flyBehavior)) {
            System.out.println("我还不会叫");
        } else {
            flyBehavior.fly();
        }
    }

    /**
     * 叫 ∩
     */
    public void performQuack(){
        if (Objects.isNull(flyBehavior)) {
            System.out.println("我还不会飞");
        } else {
            quackBehavior.quack();
        }
    }

    /**
     * 游泳
     */
    public void swim(){
        System.out.println("我正在游泳");
    }

    /**
     * 展示外表样式
     */
    public void display(){
        System.out.println("我有着最美的毛发");
    }

}
